package gui;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import gestionBDD.extractionBDD;
import gestionBDD.requetesContient;
import interne.Album;
import interne.Client;
import interne.Contient;
import com.trolltech.qt.gui.*;

public class fenetreAjoutPhoto extends QWidget {
	
	private Client client ;
	private Album album ;
	private Album albumSrc ;
	
	private QListWidget albumListWidget;
	private QListWidget contientListWidget;

	/**
	 * Construit la fenêtre pour ajouter des photos préxistantes (soit public, soit d'un autre album personnel)
	 * @param client
	 * @param album
	 * @throws SQLException
	 */
	public fenetreAjoutPhoto(Client c, Album a) throws SQLException {
		
		setAlbum(a) ;
		setClient(c) ;
		
		albumListWidget = new QListWidget();
		albumListWidget.currentItemChanged.connect(this, "afficherContenu()");
		
		contientListWidget = new QListWidget();
		
        /** Album GroupBox' **/
        QGroupBox albumsGroup = new QGroupBox(tr("Albums disponibles"));
        QHBoxLayout albumsLayout = new QHBoxLayout();
        albumsLayout.addWidget(albumListWidget);
        albumsLayout.addWidget(contientListWidget);
        albumsGroup.setLayout(albumsLayout);

        
        /** Ajout GroupBox' **/
        QGroupBox ajoutGroup = new QGroupBox(tr("Sélection"));
        
        /* Boutons Details */
        QPushButton boutonDetails = new QPushButton("Détails...") ; 
        boutonDetails.clicked.connect(this, "popDetails()");  

        /* Boutons AjouterPanier */
        QPushButton boutonAjouterPanier = new QPushButton("Ajouter à l'album " + album.getTitreAlbum());  
        boutonAjouterPanier.clicked.connect(this, "ajouterPhoto()"); 
        
        /* Bouton Retour */
        QPushButton boutonRetour = new QPushButton("Retour");
        boutonRetour.clicked.connect(this, "retour()");  

        /* Ajout Layout */
        QGridLayout ajoutLayout = new QGridLayout();
        ajoutLayout.addWidget(boutonDetails, 1, 2);
        ajoutLayout.addWidget(boutonAjouterPanier, 2, 2);
        ajoutLayout.addWidget(boutonRetour, 3, 2);
        ajoutGroup.setLayout(ajoutLayout); 
          
       
		// Dialog Layout
        QVBoxLayout layout = new QVBoxLayout();
        layout.addWidget(albumsGroup);
        layout.addWidget(ajoutGroup);
      
        setLayout(layout);
        
        /** Extrait tous les albums pour créer la liste **/
		List<Album> listeAlbum = new ArrayList<Album>(); 
		listeAlbum = extractionBDD.extraireAlbumsCommandables(client);
		Iterator<Album> ite = listeAlbum.iterator();
		while (ite.hasNext()) {
		    Album album_dispo = ite.next();
		    albumListWidget.addItem(album_dispo.getTitreAlbum() + " / " + album_dispo.getIdAlbum()) ;
		}
	}
	
	/*
	 * Affiche le contenu de l'album sélectionné dans le volet de droite
	 */
	public void afficherContenu() throws SQLException {
		contientListWidget.clear();
		
		String temp[] = albumListWidget.currentItem().text().split(" / ");
		albumSrc = new Album(Integer.parseInt(temp[1]));
		
		List<Contient> listePhoto = new ArrayList<Contient>();
		listePhoto = extractionBDD.extrairePhotos(albumSrc);
		Iterator<Contient> ite = listePhoto.iterator();
		while (ite.hasNext()) {
		    Contient photo = ite.next();
		    contientListWidget.addItem(photo.getTitreImage() + " / " + photo.getIdContient()) ;
		}
	}
	
	/*
	 * Affiche les détails de la photo sélectionnée dans une pop-up
	 */
	public void popDetails() throws SQLException {
		String temp[] = contientListWidget.currentItem().text().split(" / ") ;
		Contient contient = new Contient(Integer.parseInt(temp[1])) ;
		contient = requetesContient.trouverAvecId(contient) ;
		fenetrePhotoDetails fenetre = new fenetrePhotoDetails(contient) ;
		fenetre.show() ;
	}
	
	/*
	 * Ajoute la photo de l'album dans l'album courant
	 */
	public void ajouterPhoto() throws SQLException {
		String temp[] = contientListWidget.currentItem().text().split(" / ") ;
		Contient contient = new Contient(Integer.parseInt(temp[1])) ;
		contient = requetesContient.trouverAvecId(contient) ;
		contient.setIdAlbum(album.getIdAlbum());
		requetesContient.ajouterContient(contient);
		contient = requetesContient.trouverId(contient) ;
		requetesContient.corrigerOrdre(contient);
        fenetrePhoto fenetre = new fenetrePhoto(client, album);
		QMainWindow menuPrincipal = (QMainWindow) this.parentWidget() ;
		menuPrincipal.setCentralWidget(fenetre) ;
	}

	/*
	 * Retour à l'écran précédent
	 */
	public void retour() throws SQLException {
		QMainWindow menuPrincipal = (QMainWindow) this.parentWidget() ;
		fenetrePhoto fenetre = new fenetrePhoto(client, album);
		menuPrincipal.setCentralWidget(fenetre) ;
	}

	public Client getClient() {
		return client;
	}

	public void setClient(Client client) {
		this.client = client;
	}

	public Album getAlbum() {
		return album;
	}

	public void setAlbum(Album album) {
		this.album = album;
	}

	
}